import os
import sys
import time

from selenium import webdriver
from PIL import Image

sys.path.append(os.getcwd() + "/chaojiying_demo")
# 报错正常
from chaojiying import Chaojiying_Client

# 使用selenium打开谷歌浏览器
driver = webdriver.Chrome()

# 设置窗口的大小
driver.set_window_size(1200, 800)

# 打开一个带有普通验证码的登录页面
driver.get("http://www.woniudati.com/LogonUser.aspx")

# 下面解析页面数据
# 输入用户名
driver.find_element_by_xpath("//input[@id='ctl00_ctl00_ContentPlaceHolder1_Body_U_LoginName']").send_keys("fa485803186")
# 输入密码
driver.find_element_by_xpath("//input[@id='ctl00_ctl00_ContentPlaceHolder1_Body_U_Password']").send_keys("485803186")

# 下面截屏整个页面然后单独提取出验证码的部分截屏图片
# 截屏
driver.get_screenshot_as_file('screenshort.png')
# 提取验证码位置
img_element = driver.find_element_by_xpath('//*[@id="code"]')
# 注意，因为本代码是在Mac电脑下运行因为Mac电脑的像素是普通电脑的2倍，所以下面在定位位置时要乘以2倍
# 注意，因为本代码是在window本电脑下运行因为window本电脑的像素是普通电脑的1.25倍，所以下面在定位位置时要乘以1.25倍
left = int(img_element.location['x']) * 1.25
top = int(img_element.location['y']) * 1.25
right = int(img_element.location['x'] + img_element.size['width']) * 1.25
bottom = int(img_element.location['y'] + img_element.size['height']) * 1.25
# 通过Image处理图像
im = Image.open('screenshort.png')
im = im.crop((left, top, right, bottom))
# 保存得到的验证码图片
im.save('code.png')

# 下面使用打码平台识别出图片验证码然后自动输入
# 使用云打码识别
chaojiying = Chaojiying_Client('dong4716138', 'wangmingdong123', '1')  # 用户中心>>软件ID 生成一个替换 96001
im = open('code.png', 'rb').read()  # 本地图片文件路径 来替换 a.jpg 有时WIN系统须要//
ret = chaojiying.PostPic(im, 1902)  # 1902 验证码类型  官方网站>>价格体系 3.4+版 print 后要加()
print(ret)

# 输入验证码
driver.find_element_by_xpath(
    "//input[@id='ctl00_ctl00_ContentPlaceHolder1_Body_VerifyCodeControl_verifycode']").send_keys(ret.get("pic_str"))

time.sleep(3)

# 点击登录
driver.find_element_by_xpath("//a[@class='buttom2']").click()

time.sleep(5)

# 提取出登录之后的cookie
print("提取到的cookie是:", driver.get_cookies())

# 退出谷歌浏览器
driver.quit()
